/******************************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <stdio.h>
#include <stdbool.h> /* Include standard boolean library */
#include <string.h> /* Include string library */
unsigned int Read_Data(char* _buffer)
{
unsigned int len = 0;
unsigned char tmp[50] = {'+', 'I', 'P', 'D', ',', /*'0', ',',*/ '3', ':', 0x04, 0x01, 'f',
'+', 'I', 'P', 'D', ',', /*'1', '9', ',',*/ '6', ':', 0x01, 0x04, 'f', 'i', 's', 'k'
};
while (tmp[len] != '\0') {
_buffer[len] = tmp[len];
len++;
}
return len;
}
/* Connection Mode */
#define SINGLE 0
#define MULTIPLE 1
int main()
{
printf("Hello World\n");
int connectionMode = SINGLE;
char _buffer[150];
unsigned char payload[50];
unsigned char tmp[10];
unsigned int dKanal;
unsigned int dKommando;
unsigned int dLengde;
int len = 0;
memset(_buffer, 0, 150);
len = Read_Data(_buffer);
char * pbuffer_cmd = strstr(_buffer, "+IPD");
if (len > 0 && pbuffer_cmd != NULL) {
while (pbuffer_cmd != NULL) {
char *pbuffer_len = strstr(pbuffer_cmd, ":");
int startpos = (int)(pbuffer_cmd - _buffer);
int endpos = (int)(pbuffer_len - _buffer);
printf("startpos: %d, endpos: %d\n", startpos, endpos);
strncpy(tmp, pbuffer_cmd, endpos);
printf("test: %s\n", tmp);
char * token = strtok(tmp, ",");
printf( "head: %s\n", token ); // +IPD (ignore)
if (connectionMode == MULTIPLE) {
token = strtok(NULL, ",");
sscanf(token, "%d", &dKanal);
printf( "kanal ID: %d\n", dKanal ); // channel ID
}
token = strtok(NULL, ":");
sscanf(token, "%d", &dLengde);
printf( "lengde: %d\n", dLengde ); // data length
strncpy(payload, pbuffer_len+1, dLengde);
dKommando = payload[0];
dLengde = payload[1];
// +1 for å klarere :, +2 for å gå forbi kommando- og lengde-bytes
strncpy(payload, pbuffer_len+1 +2, dLengde);
payload[dLengde] = 0;
//handlePayload(dKommando, dLengde, payload);
printf("kommando: %d, lengde: %d, payload: |%s|\n", dKommando, dLengde, payload);
pbuffer_cmd = strstr(pbuffer_len, "+IPD");
}
}
printf("DONE\n");
return 0;
}